//\r
// Power Management PCI Configuration Register fields\r
//\r
-#define PMBA_RTE BIT0\r
-#define PMIOSE BIT0\r
+#define PMBA_RTE BIT0\r
+#define PIIX4_PMIOSE BIT0\r
+#define Q35_ACPI_EN BIT7\r
\r
//\r
// Offset in the Power Management Base Address to the ACPI Timer\r
{\r
UINT16 HostBridgeDevId;\r
UINTN Pmba;\r
- UINTN PmRegMisc;\r
+ UINTN AcpiCtlReg;\r
+ UINT8 AcpiEnBit;\r
\r
//\r
// Query Host Bridge DID to determine platform type\r
HostBridgeDevId = PciRead16 (OVMF_HOSTBRIDGE_DID);\r
switch (HostBridgeDevId) {\r
case INTEL_82441_DEVICE_ID:\r
- Pmba = POWER_MGMT_REGISTER_PIIX4 (0x40);\r
- PmRegMisc = POWER_MGMT_REGISTER_PIIX4 (0x80);\r
+ Pmba = POWER_MGMT_REGISTER_PIIX4 (0x40);\r
+ AcpiCtlReg = POWER_MGMT_REGISTER_PIIX4 (0x80); // PMREGMISC\r
+ AcpiEnBit = PIIX4_PMIOSE;\r
break;\r
case INTEL_Q35_MCH_DEVICE_ID:\r
- Pmba = POWER_MGMT_REGISTER_Q35 (0x40);\r
- PmRegMisc = POWER_MGMT_REGISTER_Q35 (0x80);\r
+ Pmba = POWER_MGMT_REGISTER_Q35 (0x40);\r
+ AcpiCtlReg = POWER_MGMT_REGISTER_Q35 (0x44); // ACPI_CNTL\r
+ AcpiEnBit = Q35_ACPI_EN;\r
break;\r
default:\r
DEBUG ((EFI_D_ERROR, "%a: Unknown Host Bridge Device ID: 0x%04x\n",\r
//\r
// Check to see if the Power Management Base Address is already enabled\r
//\r
- if ((PciRead8 (PmRegMisc) & PMIOSE) == 0) {\r
+ if ((PciRead8 (AcpiCtlReg) & AcpiEnBit) == 0) {\r
//\r
// If the Power Management Base Address is not programmed,\r
// then program the Power Management Base Address from a PCD.\r
PciAndThenOr32 (Pmba, (UINT32) ~0xFFC0, PcdGet16 (PcdAcpiPmBaseAddress));\r
\r
//\r
- // Enable PMBA I/O port decodes in PMREGMISC\r
+ // Enable PMBA I/O port decodes\r
//\r
- PciOr8 (PmRegMisc, PMIOSE);\r
+ PciOr8 (AcpiCtlReg, AcpiEnBit);\r
}\r
\r
return RETURN_SUCCESS;\r