diff options
Diffstat (limited to 'src/soc/intel/common/acpi_wake_source.c')
-rw-r--r-- | src/soc/intel/common/acpi_wake_source.c | 29 |
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); |