]> git.proxmox.com Git - mirror_edk2.git/blobdiff - CorebootModulePkg/Library/CbParseLib/CbParseLib.c
CorebootModulePkg: Get power management register addresses.
[mirror_edk2.git] / CorebootModulePkg / Library / CbParseLib / CbParseLib.c
index 66374b5a32bdeee7ab5a9ef638fcfa937068128d..8509bd2f9e51013e7ffecbeae8a2713bd467b26e 100644 (file)
@@ -395,6 +395,8 @@ CbParseSmbiosTable (
   @param  pPmTimerReg        Pointer to the address of power management timer register\r
   @param  pResetReg          Pointer to the address of system reset register\r
   @param  pResetValue        Pointer to the value to be writen to the system reset register\r
+  @param  pPmEvtReg          Pointer to the address of power management event register\r
+  @param  pPmGpeEnReg        Pointer to the address of power management GPE enable register\r
 \r
   @retval RETURN_SUCCESS     Successfully find out all the required fadt information.\r
   @retval RETURN_NOT_FOUND   Failed to find the fadt table.\r
@@ -405,7 +407,9 @@ CbParseFadtInfo (
   OUT UINTN      *pPmCtrlReg,\r
   OUT UINTN      *pPmTimerReg,\r
   OUT UINTN      *pResetReg,\r
-  OUT UINTN      *pResetValue\r
+  OUT UINTN      *pResetValue,\r
+  OUT UINTN      *pPmEvtReg,\r
+  OUT UINTN      *pPmGpeEnReg\r
   )\r
 {\r
   EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_POINTER  *Rsdp;\r
@@ -464,6 +468,16 @@ CbParseFadtInfo (
         }\r
         DEBUG ((EFI_D_INFO, "Reset Value 0x%x\n", Fadt->ResetValue));\r
 \r
+        if (pPmEvtReg != NULL) {   \r
+          *pPmEvtReg = Fadt->Pm1aEvtBlk;\r
+          DEBUG ((EFI_D_INFO, "PmEvt Reg 0x%x\n", Fadt->Pm1aEvtBlk));\r
+        }\r
+\r
+        if (pPmGpeEnReg != NULL) {   \r
+          *pPmGpeEnReg = Fadt->Gpe0Blk + Fadt->Gpe0BlkLen / 2;\r
+          DEBUG ((EFI_D_INFO, "PmGpeEn Reg 0x%x\n", *pPmGpeEnReg));\r
+        }\r
+\r
         return RETURN_SUCCESS;\r
       }\r
     }\r
@@ -495,6 +509,15 @@ CbParseFadtInfo (
           *pResetValue = Fadt->ResetValue;\r
         DEBUG ((EFI_D_ERROR, "Reset Value 0x%x\n", Fadt->ResetValue));\r
 \r
+        if (pPmEvtReg != NULL) {   \r
+          *pPmEvtReg = Fadt->Pm1aEvtBlk;\r
+           DEBUG ((EFI_D_INFO, "PmEvt Reg 0x%x\n", Fadt->Pm1aEvtBlk));\r
+        }\r
+\r
+        if (pPmGpeEnReg != NULL) {   \r
+          *pPmGpeEnReg = Fadt->Gpe0Blk + Fadt->Gpe0BlkLen / 2;\r
+          DEBUG ((EFI_D_INFO, "PmGpeEn Reg 0x%x\n", *pPmGpeEnReg));\r
+        }        \r
         return RETURN_SUCCESS;\r
       }\r
     }\r