&gPciCfgPpi\r
};\r
\r
+\r
+/**\r
+ Convert EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS to PCI_LIB_ADDRESS.\r
+\r
+ @param Address PCI address with\r
+ EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS format.\r
+ \r
+ @return The PCI address with PCI_LIB_ADDRESS format.\r
+ \r
+**/\r
+UINTN\r
+PciCfgAddressConvert (\r
+ EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS *Address\r
+ )\r
+{\r
+ if (Address->ExtendedRegister == 0) {\r
+ return PCI_LIB_ADDRESS (Address->Bus, Address->Device, Address->Function, Address->Register);\r
+ }\r
+\r
+ return PCI_LIB_ADDRESS (Address->Bus, Address->Device, Address->Function, Address->ExtendedRegister);\r
+}\r
+\r
/**\r
Reads from a given location in the PCI configuration space.\r
\r
{\r
UINTN PciLibAddress;\r
\r
- PciLibAddress = COMMON_TO_PCILIB_ADDRESS (Address);\r
+ PciLibAddress = PciCfgAddressConvert ((EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS *) &Address);\r
\r
if (Width == EfiPeiPciCfgWidthUint8) {\r
*((UINT8 *) Buffer) = PciRead8 (PciLibAddress);\r
{\r
UINTN PciLibAddress;\r
\r
- PciLibAddress = COMMON_TO_PCILIB_ADDRESS (Address);\r
+ PciLibAddress = PciCfgAddressConvert ((EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS *) &Address);\r
\r
if (Width == EfiPeiPciCfgWidthUint8) {\r
PciWrite8 (PciLibAddress, *((UINT8 *) Buffer));\r
{\r
UINTN PciLibAddress;\r
\r
- PciLibAddress = COMMON_TO_PCILIB_ADDRESS (Address);\r
+ PciLibAddress = PciCfgAddressConvert ((EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS *) &Address);\r
\r
if (Width == EfiPeiPciCfgWidthUint8) {\r
PciAndThenOr8 (PciLibAddress, ~(*(UINT8 *)ClearBits), *((UINT8 *) SetBits));\r