/** @file\r
PCI configuration Library Services that do PCI configuration and also enable\r
the PCI operations to be replayed during an S3 resume. This library class\r
- maps directly on top of the PciLib class. \r
+ maps directly on top of the PciLib class.\r
\r
- Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>\r
+ Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
\r
- This program and the accompanying materials\r
- are licensed and made available under the terms and conditions\r
- of the BSD License which accompanies this distribution. The\r
- full text of the license may be found at\r
- http://opensource.org/licenses/bsd-license.php\r
-\r
- 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
+ SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\r
-\r
#include <Base.h>\r
\r
#include <Library/DebugLib.h>\r
#include <Library/S3PciLib.h>\r
\r
#define PCILIB_TO_COMMON_ADDRESS(Address) \\r
- ((UINT64) ((((UINTN) ((Address>>20) & 0xff)) << 24) + (((UINTN) ((Address>>15) & 0x1f)) << 16) + (((UINTN) ((Address>>12) & 0x07)) << 8) + ((UINTN) (Address & 0xfff ))))\r
+ ((((UINTN) ((Address>>20) & 0xff)) << 24) + (((UINTN) ((Address>>15) & 0x1f)) << 16) + (((UINTN) ((Address>>12) & 0x07)) << 8) + ((UINTN) (Address & 0xfff )))\r
\r
/**\r
Saves a PCI configuration value to the boot script.\r
\r
This internal worker function saves a PCI configuration value in\r
- the S3 script to be replayed on S3 resume. \r
+ the S3 script to be replayed on S3 resume.\r
\r
If the saving process fails, then ASSERT().\r
\r
VOID\r
InternalSavePciWriteValueToBootScript (\r
IN S3_BOOT_SCRIPT_LIB_WIDTH Width,\r
- IN UINTN Address,\r
- IN VOID *Buffer\r
+ IN UINTN Address,\r
+ IN VOID *Buffer\r
)\r
{\r
- RETURN_STATUS Status;\r
+ RETURN_STATUS Status;\r
\r
Status = S3BootScriptSavePciCfgWrite (\r
Width,\r
- PCILIB_TO_COMMON_ADDRESS(Address),\r
+ PCILIB_TO_COMMON_ADDRESS (Address),\r
1,\r
Buffer\r
);\r
Saves an 8-bit PCI configuration value to the boot script.\r
\r
This internal worker function saves an 8-bit PCI configuration value in\r
- the S3 script to be replayed on S3 resume. \r
+ the S3 script to be replayed on S3 resume.\r
\r
If the saving process fails, then ASSERT().\r
\r
**/\r
UINT8\r
InternalSavePciWrite8ValueToBootScript (\r
- IN UINTN Address,\r
- IN UINT8 Value\r
+ IN UINTN Address,\r
+ IN UINT8 Value\r
)\r
{\r
InternalSavePciWriteValueToBootScript (S3BootScriptWidthUint8, Address, &Value);\r
UINT8\r
EFIAPI\r
S3PciRead8 (\r
- IN UINTN Address\r
+ IN UINTN Address\r
)\r
{\r
return InternalSavePciWrite8ValueToBootScript (Address, PciRead8 (Address));\r
UINT8\r
EFIAPI\r
S3PciWrite8 (\r
- IN UINTN Address,\r
- IN UINT8 Value\r
+ IN UINTN Address,\r
+ IN UINT8 Value\r
)\r
{\r
return InternalSavePciWrite8ValueToBootScript (Address, PciWrite8 (Address, Value));\r
UINT8\r
EFIAPI\r
S3PciOr8 (\r
- IN UINTN Address,\r
- IN UINT8 OrData\r
+ IN UINTN Address,\r
+ IN UINT8 OrData\r
)\r
{\r
return InternalSavePciWrite8ValueToBootScript (Address, PciOr8 (Address, OrData));\r
UINT8\r
EFIAPI\r
S3PciAnd8 (\r
- IN UINTN Address,\r
- IN UINT8 AndData\r
+ IN UINTN Address,\r
+ IN UINT8 AndData\r
)\r
{\r
return InternalSavePciWrite8ValueToBootScript (Address, PciAnd8 (Address, AndData));\r
UINT8\r
EFIAPI\r
S3PciAndThenOr8 (\r
- IN UINTN Address,\r
- IN UINT8 AndData,\r
- IN UINT8 OrData\r
+ IN UINTN Address,\r
+ IN UINT8 AndData,\r
+ IN UINT8 OrData\r
)\r
{\r
return InternalSavePciWrite8ValueToBootScript (Address, PciAndThenOr8 (Address, AndData, OrData));\r
UINT8\r
EFIAPI\r
S3PciBitFieldRead8 (\r
- IN UINTN Address,\r
- IN UINTN StartBit,\r
- IN UINTN EndBit\r
+ IN UINTN Address,\r
+ IN UINTN StartBit,\r
+ IN UINTN EndBit\r
)\r
{\r
return InternalSavePciWrite8ValueToBootScript (Address, PciBitFieldRead8 (Address, StartBit, EndBit));\r
UINT8\r
EFIAPI\r
S3PciBitFieldWrite8 (\r
- IN UINTN Address,\r
- IN UINTN StartBit,\r
- IN UINTN EndBit,\r
- IN UINT8 Value\r
+ IN UINTN Address,\r
+ IN UINTN StartBit,\r
+ IN UINTN EndBit,\r
+ IN UINT8 Value\r
)\r
{\r
return InternalSavePciWrite8ValueToBootScript (Address, PciBitFieldWrite8 (Address, StartBit, EndBit, Value));\r
UINT8\r
EFIAPI\r
S3PciBitFieldOr8 (\r
- IN UINTN Address,\r
- IN UINTN StartBit,\r
- IN UINTN EndBit,\r
- IN UINT8 OrData\r
+ IN UINTN Address,\r
+ IN UINTN StartBit,\r
+ IN UINTN EndBit,\r
+ IN UINT8 OrData\r
)\r
{\r
return InternalSavePciWrite8ValueToBootScript (Address, PciBitFieldOr8 (Address, StartBit, EndBit, OrData));\r
UINT8\r
EFIAPI\r
S3PciBitFieldAnd8 (\r
- IN UINTN Address,\r
- IN UINTN StartBit,\r
- IN UINTN EndBit,\r
- IN UINT8 AndData\r
+ IN UINTN Address,\r
+ IN UINTN StartBit,\r
+ IN UINTN EndBit,\r
+ IN UINT8 AndData\r
)\r
{\r
return InternalSavePciWrite8ValueToBootScript (Address, PciBitFieldAnd8 (Address, StartBit, EndBit, AndData));\r
UINT8\r
EFIAPI\r
S3PciBitFieldAndThenOr8 (\r
- IN UINTN Address,\r
- IN UINTN StartBit,\r
- IN UINTN EndBit,\r
- IN UINT8 AndData,\r
- IN UINT8 OrData\r
+ IN UINTN Address,\r
+ IN UINTN StartBit,\r
+ IN UINTN EndBit,\r
+ IN UINT8 AndData,\r
+ IN UINT8 OrData\r
)\r
{\r
return InternalSavePciWrite8ValueToBootScript (Address, PciBitFieldAndThenOr8 (Address, StartBit, EndBit, AndData, OrData));\r
Saves a 16-bit PCI configuration value to the boot script.\r
\r
This internal worker function saves a 16-bit PCI configuration value in\r
- the S3 script to be replayed on S3 resume. \r
+ the S3 script to be replayed on S3 resume.\r
\r
If the saving process fails, then ASSERT().\r
\r
**/\r
UINT16\r
InternalSavePciWrite16ValueToBootScript (\r
- IN UINTN Address,\r
- IN UINT16 Value\r
+ IN UINTN Address,\r
+ IN UINT16 Value\r
)\r
{\r
InternalSavePciWriteValueToBootScript (S3BootScriptWidthUint16, Address, &Value);\r
UINT16\r
EFIAPI\r
S3PciRead16 (\r
- IN UINTN Address\r
+ IN UINTN Address\r
)\r
{\r
return InternalSavePciWrite16ValueToBootScript (Address, PciRead16 (Address));\r
UINT16\r
EFIAPI\r
S3PciWrite16 (\r
- IN UINTN Address,\r
- IN UINT16 Value\r
+ IN UINTN Address,\r
+ IN UINT16 Value\r
)\r
{\r
return InternalSavePciWrite16ValueToBootScript (Address, PciWrite16 (Address, Value));\r
UINT16\r
EFIAPI\r
S3PciOr16 (\r
- IN UINTN Address,\r
- IN UINT16 OrData\r
+ IN UINTN Address,\r
+ IN UINT16 OrData\r
)\r
{\r
return InternalSavePciWrite16ValueToBootScript (Address, PciOr16 (Address, OrData));\r
UINT16\r
EFIAPI\r
S3PciAnd16 (\r
- IN UINTN Address,\r
- IN UINT16 AndData\r
+ IN UINTN Address,\r
+ IN UINT16 AndData\r
)\r
{\r
return InternalSavePciWrite16ValueToBootScript (Address, PciAnd16 (Address, AndData));\r
UINT16\r
EFIAPI\r
S3PciAndThenOr16 (\r
- IN UINTN Address,\r
- IN UINT16 AndData,\r
- IN UINT16 OrData\r
+ IN UINTN Address,\r
+ IN UINT16 AndData,\r
+ IN UINT16 OrData\r
)\r
{\r
return InternalSavePciWrite16ValueToBootScript (Address, PciAndThenOr16 (Address, AndData, OrData));\r
UINT16\r
EFIAPI\r
S3PciBitFieldRead16 (\r
- IN UINTN Address,\r
- IN UINTN StartBit,\r
- IN UINTN EndBit\r
+ IN UINTN Address,\r
+ IN UINTN StartBit,\r
+ IN UINTN EndBit\r
)\r
{\r
return InternalSavePciWrite16ValueToBootScript (Address, PciBitFieldRead16 (Address, StartBit, EndBit));\r
UINT16\r
EFIAPI\r
S3PciBitFieldWrite16 (\r
- IN UINTN Address,\r
- IN UINTN StartBit,\r
- IN UINTN EndBit,\r
- IN UINT16 Value\r
+ IN UINTN Address,\r
+ IN UINTN StartBit,\r
+ IN UINTN EndBit,\r
+ IN UINT16 Value\r
)\r
{\r
return InternalSavePciWrite16ValueToBootScript (Address, PciBitFieldWrite16 (Address, StartBit, EndBit, Value));\r
UINT16\r
EFIAPI\r
S3PciBitFieldOr16 (\r
- IN UINTN Address,\r
- IN UINTN StartBit,\r
- IN UINTN EndBit,\r
- IN UINT16 OrData\r
+ IN UINTN Address,\r
+ IN UINTN StartBit,\r
+ IN UINTN EndBit,\r
+ IN UINT16 OrData\r
)\r
{\r
return InternalSavePciWrite16ValueToBootScript (Address, PciBitFieldOr16 (Address, StartBit, EndBit, OrData));\r
UINT16\r
EFIAPI\r
S3PciBitFieldAnd16 (\r
- IN UINTN Address,\r
- IN UINTN StartBit,\r
- IN UINTN EndBit,\r
- IN UINT16 AndData\r
+ IN UINTN Address,\r
+ IN UINTN StartBit,\r
+ IN UINTN EndBit,\r
+ IN UINT16 AndData\r
)\r
{\r
return InternalSavePciWrite16ValueToBootScript (Address, PciBitFieldAnd16 (Address, StartBit, EndBit, AndData));\r
UINT16\r
EFIAPI\r
S3PciBitFieldAndThenOr16 (\r
- IN UINTN Address,\r
- IN UINTN StartBit,\r
- IN UINTN EndBit,\r
- IN UINT16 AndData,\r
- IN UINT16 OrData\r
+ IN UINTN Address,\r
+ IN UINTN StartBit,\r
+ IN UINTN EndBit,\r
+ IN UINT16 AndData,\r
+ IN UINT16 OrData\r
)\r
{\r
return InternalSavePciWrite16ValueToBootScript (Address, PciBitFieldAndThenOr16 (Address, StartBit, EndBit, AndData, OrData));\r
Saves a 32-bit PCI configuration value to the boot script.\r
\r
This internal worker function saves a 32-bit PCI configuration value in the S3 script\r
- to be replayed on S3 resume. \r
+ to be replayed on S3 resume.\r
\r
If the saving process fails, then ASSERT().\r
\r
**/\r
UINT32\r
InternalSavePciWrite32ValueToBootScript (\r
- IN UINTN Address,\r
- IN UINT32 Value\r
+ IN UINTN Address,\r
+ IN UINT32 Value\r
)\r
{\r
InternalSavePciWriteValueToBootScript (S3BootScriptWidthUint32, Address, &Value);\r
UINT32\r
EFIAPI\r
S3PciRead32 (\r
- IN UINTN Address\r
+ IN UINTN Address\r
)\r
{\r
return InternalSavePciWrite32ValueToBootScript (Address, PciRead32 (Address));\r
UINT32\r
EFIAPI\r
S3PciWrite32 (\r
- IN UINTN Address,\r
- IN UINT32 Value\r
+ IN UINTN Address,\r
+ IN UINT32 Value\r
)\r
{\r
return InternalSavePciWrite32ValueToBootScript (Address, PciWrite32 (Address, Value));\r
UINT32\r
EFIAPI\r
S3PciOr32 (\r
- IN UINTN Address,\r
- IN UINT32 OrData\r
+ IN UINTN Address,\r
+ IN UINT32 OrData\r
)\r
{\r
return InternalSavePciWrite32ValueToBootScript (Address, PciOr32 (Address, OrData));\r
UINT32\r
EFIAPI\r
S3PciAnd32 (\r
- IN UINTN Address,\r
- IN UINT32 AndData\r
+ IN UINTN Address,\r
+ IN UINT32 AndData\r
)\r
{\r
return InternalSavePciWrite32ValueToBootScript (Address, PciAnd32 (Address, AndData));\r
UINT32\r
EFIAPI\r
S3PciAndThenOr32 (\r
- IN UINTN Address,\r
- IN UINT32 AndData,\r
- IN UINT32 OrData\r
+ IN UINTN Address,\r
+ IN UINT32 AndData,\r
+ IN UINT32 OrData\r
)\r
{\r
return InternalSavePciWrite32ValueToBootScript (Address, PciAndThenOr32 (Address, AndData, OrData));\r
UINT32\r
EFIAPI\r
S3PciBitFieldRead32 (\r
- IN UINTN Address,\r
- IN UINTN StartBit,\r
- IN UINTN EndBit\r
+ IN UINTN Address,\r
+ IN UINTN StartBit,\r
+ IN UINTN EndBit\r
)\r
{\r
return InternalSavePciWrite32ValueToBootScript (Address, PciBitFieldRead32 (Address, StartBit, EndBit));\r
UINT32\r
EFIAPI\r
S3PciBitFieldWrite32 (\r
- IN UINTN Address,\r
- IN UINTN StartBit,\r
- IN UINTN EndBit,\r
- IN UINT32 Value\r
+ IN UINTN Address,\r
+ IN UINTN StartBit,\r
+ IN UINTN EndBit,\r
+ IN UINT32 Value\r
)\r
{\r
return InternalSavePciWrite32ValueToBootScript (Address, PciBitFieldWrite32 (Address, StartBit, EndBit, Value));\r
UINT32\r
EFIAPI\r
S3PciBitFieldOr32 (\r
- IN UINTN Address,\r
- IN UINTN StartBit,\r
- IN UINTN EndBit,\r
- IN UINT32 OrData\r
+ IN UINTN Address,\r
+ IN UINTN StartBit,\r
+ IN UINTN EndBit,\r
+ IN UINT32 OrData\r
)\r
{\r
return InternalSavePciWrite32ValueToBootScript (Address, PciBitFieldOr32 (Address, StartBit, EndBit, OrData));\r
UINT32\r
EFIAPI\r
S3PciBitFieldAnd32 (\r
- IN UINTN Address,\r
- IN UINTN StartBit,\r
- IN UINTN EndBit,\r
- IN UINT32 AndData\r
+ IN UINTN Address,\r
+ IN UINTN StartBit,\r
+ IN UINTN EndBit,\r
+ IN UINT32 AndData\r
)\r
{\r
return InternalSavePciWrite32ValueToBootScript (Address, PciBitFieldAnd32 (Address, StartBit, EndBit, AndData));\r
UINT32\r
EFIAPI\r
S3PciBitFieldAndThenOr32 (\r
- IN UINTN Address,\r
- IN UINTN StartBit,\r
- IN UINTN EndBit,\r
- IN UINT32 AndData,\r
- IN UINT32 OrData\r
+ IN UINTN Address,\r
+ IN UINTN StartBit,\r
+ IN UINTN EndBit,\r
+ IN UINT32 AndData,\r
+ IN UINT32 OrData\r
)\r
{\r
return InternalSavePciWrite32ValueToBootScript (Address, PciBitFieldAndThenOr32 (Address, StartBit, EndBit, AndData, OrData));\r
UINTN\r
EFIAPI\r
S3PciReadBuffer (\r
- IN UINTN StartAddress,\r
- IN UINTN Size,\r
- OUT VOID *Buffer\r
+ IN UINTN StartAddress,\r
+ IN UINTN Size,\r
+ OUT VOID *Buffer\r
)\r
{\r
- RETURN_STATUS Status;\r
+ RETURN_STATUS Status;\r
\r
Status = S3BootScriptSavePciCfgWrite (\r
S3BootScriptWidthUint8,\r
PciReadBuffer (StartAddress, Size, Buffer),\r
Buffer\r
);\r
- ASSERT (Status == RETURN_SUCCESS);\r
+ ASSERT (Status == RETURN_SUCCESS);\r
\r
return Size;\r
}\r
UINTN\r
EFIAPI\r
S3PciWriteBuffer (\r
- IN UINTN StartAddress,\r
- IN UINTN Size,\r
- IN VOID *Buffer\r
+ IN UINTN StartAddress,\r
+ IN UINTN Size,\r
+ IN VOID *Buffer\r
)\r
{\r
- RETURN_STATUS Status;\r
+ RETURN_STATUS Status;\r
\r
Status = S3BootScriptSavePciCfgWrite (\r
S3BootScriptWidthUint8,\r
Buffer\r
);\r
ASSERT (Status == RETURN_SUCCESS);\r
- \r
+\r
return Size;\r
}\r