\r
/**\r
\r
- Get swap state.\r
+ Read PCI register value.\r
+ This is a internal function.\r
+\r
+\r
+ @param Offset Offset of the register\r
+\r
+ @return The pci register value.\r
+\r
+**/\r
+UINT32\r
+ReadPciRegister (\r
+ IN UINT32 Offset\r
+ )\r
+{\r
+ EFI_STATUS Status;\r
+ UINT32 Value;\r
+ EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *PciRootBridgeIo;\r
+\r
+ Value = 0;\r
+ Status = gBS->LocateProtocol (&gEfiPciRootBridgeIoProtocolGuid, NULL, (VOID **) &PciRootBridgeIo);\r
+ if (EFI_ERROR (Status)) {\r
+ DEBUG ((EFI_D_ERROR, "FtwLite: Locate PCI root bridge io protocol - %r", Status));\r
+ return 0;\r
+ }\r
+\r
+ Status = PciRootBridgeIo->Pci.Read (\r
+ PciRootBridgeIo,\r
+ EfiPciWidthUint32,\r
+ EFI_PCI_ADDRESS (\r
+ LPC_BUS_NUMBER,\r
+ LPC_DEVICE_NUMBER,\r
+ LPC_IF,\r
+ Offset\r
+ ),\r
+ 1,\r
+ &Value\r
+ );\r
+ ASSERT_EFI_ERROR (Status);\r
+\r
+ return Value;\r
+}\r
+\r
+/**\r
+\r
+ Get swap state\r
\r
This is a internal function.\r
\r
OUT BOOLEAN *SwapState\r
)\r
{\r
- UINT32 Value;\r
- Value = PciRead32(EFI_PCI_ADDRESS (LPC_BUS_NUMBER, LPC_DEVICE_NUMBER, LPC_IF, GEN_STATUS))\r
-\r
//\r
// Top swap status is 13 bit\r
//\r
- *SwapState = (BOOLEAN) ((Value & TOP_SWAP_BIT) != 0);\r
+ *SwapState = (BOOLEAN) ((ReadPciRegister (GEN_STATUS) & TOP_SWAP_BIT) != 0);\r
\r
return EFI_SUCCESS;\r
}\r
//\r
// Top-Swap bit (bit 13, D31: F0, Offset D4h)\r
//\r
- GenStatus = PciRead32(EFI_PCI_ADDRESS (LPC_BUS_NUMBER, LPC_DEVICE_NUMBER, LPC_IF, GEN_STATUS));\r
+ GenStatus = ReadPciRegister (GEN_STATUS);\r
\r
//\r
// Set 13 bit, according to input NewSwapState\r
GenStatus &= ~TOP_SWAP_BIT;\r
}\r
\r
+ Status = gBS->LocateProtocol (&gEfiPciRootBridgeIoProtocolGuid, NULL, (VOID **) &PciRootBridgeIo);\r
+ if (EFI_ERROR (Status)) {\r
+ DEBUG ((EFI_D_ERROR, "FtwLite: Locate PCI root bridge io protocol - %r", Status));\r
+ return Status;\r
+ }\r
//\r
// Write back the GenStatus register\r
//\r
- PciWrite32(EFI_PCI_ADDRESS (LPC_BUS_NUMBER, LPC_DEVICE_NUMBER, LPC_IF, GEN_STATUS), GenStatus);\r
+ Status = PciRootBridgeIo->Pci.Write (\r
+ PciRootBridgeIo,\r
+ EfiPciWidthUint32,\r
+ EFI_PCI_ADDRESS (\r
+ LPC_BUS_NUMBER,\r
+ LPC_DEVICE_NUMBER,\r
+ LPC_IF,\r
+ GEN_STATUS\r
+ ),\r
+ 1,\r
+ &GenStatus\r
+ );\r
\r
DEBUG_CODE_BEGIN ();\r
if (TopSwap) {\r