aboutsummaryrefslogtreecommitdiff
path: root/src/soc/intel/common/acpi_wake_source.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/soc/intel/common/acpi_wake_source.c')
-rw-r--r--src/soc/intel/common/acpi_wake_source.c29
1 files changed, 17 insertions, 12 deletions
diff --git a/src/soc/intel/common/acpi_wake_source.c b/src/soc/intel/common/acpi_wake_source.c
index 976e005b05..5e67e2adca 100644
--- a/src/soc/intel/common/acpi_wake_source.c
+++ b/src/soc/intel/common/acpi_wake_source.c
@@ -17,23 +17,12 @@ __weak int soc_fill_acpi_wake(const struct chipset_power_state *ps, uint32_t *pm
}
/* Save wake source data for ACPI _SWS methods in NVS */
-static void acpi_save_wake_source(void *unused)
+static void pm_fill_gnvs(struct global_nvs *gnvs, const struct chipset_power_state *ps)
{
- struct global_nvs *gnvs = acpi_get_gnvs();
uint32_t pm1, *gpe0;
int gpe_reg, gpe_reg_count;
int reg_size = sizeof(uint32_t) * 8;
- if (!gnvs)
- return;
-
- gnvs->pm1i = -1;
- gnvs->gpei = -1;
-
- const struct chipset_power_state *ps = acpi_get_pm_state();
- if (!ps)
- return;
-
gpe_reg_count = soc_fill_acpi_wake(ps, &pm1, &gpe0);
if (gpe_reg_count < 0)
return;
@@ -76,4 +65,20 @@ static void acpi_save_wake_source(void *unused)
(long long)gnvs->pm1i, (long long)gnvs->gpei);
}
+static void acpi_save_wake_source(void *unused)
+{
+ const struct chipset_power_state *ps;
+ struct global_nvs *gnvs = acpi_get_gnvs();
+ if (!gnvs)
+ return;
+
+ gnvs->pm1i = -1;
+ gnvs->gpei = -1;
+
+ if (acpi_pm_state_for_wake(&ps) < 0)
+ return;
+
+ pm_fill_gnvs(gnvs, ps);
+}
+
BOOT_STATE_INIT_ENTRY(BS_OS_RESUME, BS_ON_ENTRY, acpi_save_wake_source, NULL);