X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=MdePkg%2FLibrary%2FSmmPciExpressLib%2FPciExpressLib.c;fp=MdePkg%2FLibrary%2FSmmPciExpressLib%2FPciExpressLib.c;h=d7876a9fb3612e66f5da9542c7745efd29f1dab7;hp=97bd32c8d20169dc4c69b9b18cdfd0c6b9e6d6f3;hb=2f88bd3a1296c522317f1c21377876de63de5be7;hpb=1436aea4d5707e672672a11bda72be2c63c936c3 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; }