]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/AcpiPlatformDxe/Qemu.c
OvmfPkg/AcpiPlatformDxe: split S3/S4 package into bytes
[mirror_edk2.git] / OvmfPkg / AcpiPlatformDxe / Qemu.c
index 35d667fe3aca6c63edb82a882ec645dffec6f640..8a6ecf75b3b52b47d29450bf47b582d480d7ef9b 100644 (file)
@@ -200,16 +200,20 @@ typedef struct {
 } FIRMWARE_DATA;\r
 \r
 typedef struct {\r
-  UINT8 NameOp;\r
-  UINT8 RootChar;\r
-  UINT8 NameChar[4];\r
-  UINT8 PackageOp;\r
-  UINT8 PkgLength;\r
-  UINT8 NumElements;\r
-  UINT8 DWordPrefix;\r
-  UINT8 Pm1aCntSlpTyp;\r
-  UINT8 Pm1bCntSlpTyp;\r
-  UINT8 Reserved[2];\r
+  UINT8 BytePrefix;\r
+  UINT8 ByteValue;\r
+} AML_BYTE;\r
+\r
+typedef struct {\r
+  UINT8    NameOp;\r
+  UINT8    RootChar;\r
+  UINT8    NameChar[4];\r
+  UINT8    PackageOp;\r
+  UINT8    PkgLength;\r
+  UINT8    NumElements;\r
+  AML_BYTE Pm1aCntSlpTyp;\r
+  AML_BYTE Pm1bCntSlpTyp;\r
+  AML_BYTE Reserved[2];\r
 } SYSTEM_STATE_PACKAGE;\r
 \r
 #pragma pack()\r
@@ -326,12 +330,14 @@ GetSuspendStates (
     '\\',                   // RootChar\r
     { '_', 'S', 'x', '_' }, // NameChar[4]\r
     0x12,                   // PackageOp\r
-    0x07,                   // PkgLength\r
-    0x01,                   // NumElements\r
-    0x0c,                   // DWordPrefix\r
-    0x00,                   // Pm1aCntSlpTyp\r
-    0x00,                   // Pm1bCntSlpTyp -- we don't support it\r
-    { 0x00, 0x00 }          // Reserved\r
+    0x0A,                   // PkgLength\r
+    0x04,                   // NumElements\r
+    { 0x0A, 0x00 },         // Pm1aCntSlpTyp\r
+    { 0x0A, 0x00 },         // Pm1bCntSlpTyp -- we don't support it\r
+    {                       // Reserved[2]\r
+      { 0x0A, 0x00 },\r
+      { 0x0A, 0x00 }\r
+    }\r
   };\r
   RETURN_STATUS                     Status;\r
   FIRMWARE_CONFIG_ITEM              FwCfgItem;\r
@@ -343,13 +349,13 @@ GetSuspendStates (
   //\r
   *SuspendToRamSize = sizeof Template;\r
   CopyMem (SuspendToRam, &Template, sizeof Template);\r
-  SuspendToRam->NameChar[2]   = '3'; // S3\r
-  SuspendToRam->Pm1aCntSlpTyp = 1;   // PIIX4: STR\r
+  SuspendToRam->NameChar[2]             = '3'; // S3\r
+  SuspendToRam->Pm1aCntSlpTyp.ByteValue = 1;   // PIIX4: STR\r
 \r
   *SuspendToDiskSize = sizeof Template;\r
   CopyMem (SuspendToDisk, &Template, sizeof Template);\r
-  SuspendToDisk->NameChar[2]   = '4'; // S4\r
-  SuspendToDisk->Pm1aCntSlpTyp = 2;   // PIIX4: POSCL\r
+  SuspendToDisk->NameChar[2]             = '4'; // S4\r
+  SuspendToDisk->Pm1aCntSlpTyp.ByteValue = 2;   // PIIX4: POSCL\r
 \r
   //\r
   // check for overrides\r
@@ -368,16 +374,20 @@ GetSuspendStates (
   // value to be written to the PM control register's SUS_TYP bits.\r
   //\r
   if (SystemStates[3] & BIT7) {\r
-    SuspendToRam->Pm1aCntSlpTyp = SystemStates[3] & (BIT2 | BIT1 | BIT0);\r
-    DEBUG ((DEBUG_INFO, "ACPI S3 value: %d\n", SuspendToRam->Pm1aCntSlpTyp));\r
+    SuspendToRam->Pm1aCntSlpTyp.ByteValue =\r
+        SystemStates[3] & (BIT2 | BIT1 | BIT0);\r
+    DEBUG ((DEBUG_INFO, "ACPI S3 value: %d\n",\r
+            SuspendToRam->Pm1aCntSlpTyp.ByteValue));\r
   } else {\r
     *SuspendToRamSize = 0;\r
     DEBUG ((DEBUG_INFO, "ACPI S3 disabled\n"));\r
   }\r
 \r
   if (SystemStates[4] & BIT7) {\r
-    SuspendToDisk->Pm1aCntSlpTyp = SystemStates[4] & (BIT2 | BIT1 | BIT0);\r
-    DEBUG ((DEBUG_INFO, "ACPI S4 value: %d\n", SuspendToDisk->Pm1aCntSlpTyp));\r
+    SuspendToDisk->Pm1aCntSlpTyp.ByteValue =\r
+        SystemStates[4] & (BIT2 | BIT1 | BIT0);\r
+    DEBUG ((DEBUG_INFO, "ACPI S4 value: %d\n",\r
+            SuspendToDisk->Pm1aCntSlpTyp.ByteValue));\r
   } else {\r
     *SuspendToDiskSize = 0;\r
     DEBUG ((DEBUG_INFO, "ACPI S4 disabled\n"));\r