Kyösti Mälkki has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/49817 )
Change subject: ACPI: Add helpers for CBMEM_ID_POWER_STATE ......................................................................
ACPI: Add helpers for CBMEM_ID_POWER_STATE
Create uniform logging for the (unlikely) case of a CBMEM entry disappearing.
Change-Id: I7c5414a03d869423c8ae5192a990fde5f9582f2d Signed-off-by: Kyösti Mälkki kyosti.malkki@gmail.com --- M src/acpi/acpi_pm.c A src/include/acpi/acpi_pm.h M src/soc/amd/common/block/acpi/pm_state.c M src/soc/amd/picasso/fch.c M src/soc/intel/alderlake/pmutil.c M src/soc/intel/apollolake/elog.c M src/soc/intel/apollolake/pmutil.c M src/soc/intel/baytrail/elog.c M src/soc/intel/baytrail/pmutil.c M src/soc/intel/baytrail/ramstage.c M src/soc/intel/braswell/elog.c M src/soc/intel/braswell/ramstage.c M src/soc/intel/broadwell/pch/elog.c M src/soc/intel/broadwell/ramstage.c M src/soc/intel/cannonlake/pmutil.c M src/soc/intel/common/block/acpi/acpi.c M src/soc/intel/common/block/pmc/pmclib.c M src/soc/intel/elkhartlake/pmutil.c M src/soc/intel/icelake/pmutil.c M src/soc/intel/jasperlake/pmutil.c M src/soc/intel/skylake/acpi.c M src/soc/intel/skylake/elog.c M src/soc/intel/tigerlake/pmutil.c 23 files changed, 126 insertions(+), 101 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/17/49817/1
diff --git a/src/acpi/acpi_pm.c b/src/acpi/acpi_pm.c index 540b6d2..3a17857 100644 --- a/src/acpi/acpi_pm.c +++ b/src/acpi/acpi_pm.c @@ -1,6 +1,8 @@ /* SPDX-License-Identifier: GPL-2.0-only */
#include <acpi/acpi.h> +#include <acpi/acpi_pm.h> +#include <cbmem.h> #include <console/console.h> #include <romstage_handoff.h> #include <smbios.h> @@ -48,3 +50,43 @@ return PM_UNSPECIFIED; } } + +void *acpi_get_pm_state(void) +{ + static void *acpi_pm_state; + if (acpi_pm_state) + return acpi_pm_state; + + acpi_pm_state = cbmem_find(CBMEM_ID_POWER_STATE); + return acpi_pm_state; +} + +int acpi_pm_state_for_elog(const struct chipset_power_state **ps) +{ + *ps = acpi_get_pm_state(); + if (!*ps) { + printk(BIOS_ERR, "No CBMEM_ID_POWER_STATE entry, no event recorced in ELOG.\n"); + return -1; + } + return 0; +} + +int acpi_pm_state_for_rtc(const struct chipset_power_state **ps) +{ + *ps = acpi_get_pm_state(); + if (!*ps) { + printk(BIOS_ERR, "No CBMEM_ID_POWER_STATE entry, RTC init aborted.\n"); + return -1; + } + return 0; +} + +int acpi_pm_state_for_wake(const struct chipset_power_state **ps) +{ + *ps = acpi_get_pm_state(); + if (!*ps) { + printk(BIOS_ERR, "No CBMEM_ID_POWER_STATE entry, wake source unknown.\n"); + return -1; + } + return 0; +} diff --git a/src/include/acpi/acpi_pm.h b/src/include/acpi/acpi_pm.h new file mode 100644 index 0000000..0759829 --- /dev/null +++ b/src/include/acpi/acpi_pm.h @@ -0,0 +1,12 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#ifndef ACPI_PM_H +#define ACPI_PM_H + +struct chipset_power_state; +void *acpi_get_pm_state(void); +int acpi_pm_state_for_elog(const struct chipset_power_state **ps); +int acpi_pm_state_for_rtc(const struct chipset_power_state **ps); +int acpi_pm_state_for_wake(const struct chipset_power_state **ps); + +#endif diff --git a/src/soc/amd/common/block/acpi/pm_state.c b/src/soc/amd/common/block/acpi/pm_state.c index 5b75675..29054ae 100644 --- a/src/soc/amd/common/block/acpi/pm_state.c +++ b/src/soc/amd/common/block/acpi/pm_state.c @@ -2,7 +2,7 @@
#include <acpi/acpi_gnvs.h> #include <bootstate.h> -#include <cbmem.h> +#include <acpi/acpi_pm.h> #include <soc/acpi.h> #include <soc/nvs.h> #include <soc/southbridge.h> @@ -53,7 +53,7 @@ { struct chipset_state *state;
- state = cbmem_find(CBMEM_ID_POWER_STATE); + state = acpi_get_pm_state(); if (state == NULL) return;
diff --git a/src/soc/amd/picasso/fch.c b/src/soc/amd/picasso/fch.c index b18fac4..701c5d2 100644 --- a/src/soc/amd/picasso/fch.c +++ b/src/soc/amd/picasso/fch.c @@ -9,7 +9,7 @@ #include <device/device.h> #include <device/pci.h> #include <device/pci_ops.h> -#include <cbmem.h> +#include <acpi/acpi_pm.h> #include <acpi/acpi_gnvs.h> #include <amdblocks/amd_pci_util.h> #include <amdblocks/reset.h> @@ -210,7 +210,7 @@ i2c_soc_init(); sb_init_acpi_ports();
- state = cbmem_find(CBMEM_ID_POWER_STATE); + state = acpi_get_pm_state(); if (state) { acpi_pm_gpe_add_events_print_events(&state->gpe_state); gpio_add_events(&state->gpio_state); diff --git a/src/soc/intel/alderlake/pmutil.c b/src/soc/intel/alderlake/pmutil.c index 79088dd..d8f1742 100644 --- a/src/soc/intel/alderlake/pmutil.c +++ b/src/soc/intel/alderlake/pmutil.c @@ -14,7 +14,7 @@ #define __SIMPLE_DEVICE__
#include <device/mmio.h> -#include <cbmem.h> +#include <acpi/acpi_pm.h> #include <device/device.h> #include <device/pci.h> #include <device/pci_def.h> @@ -187,12 +187,10 @@
int soc_get_rtc_failed(void) { - const struct chipset_power_state *ps = cbmem_find(CBMEM_ID_POWER_STATE); + const struct chipset_power_state *ps;
- if (!ps) { - printk(BIOS_ERR, "Could not find power state in cbmem, RTC init aborted\n"); + if (acpi_pm_state_for_rtc(&ps) < 0) return 1; - }
return rtc_failed(ps->gen_pmcon_b); } @@ -243,7 +241,7 @@ return prev_sleep_state; }
-void soc_fill_power_state(struct chipset_power_state *ps) +void soc_fill_acpi_pm(struct chipset_power_state *ps) { uint8_t *pmc;
diff --git a/src/soc/intel/apollolake/elog.c b/src/soc/intel/apollolake/elog.c index b65ab10..a341f14 100644 --- a/src/soc/intel/apollolake/elog.c +++ b/src/soc/intel/apollolake/elog.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: GPL-2.0-only */
-#include <cbmem.h> +#include <acpi/acpi_pm.h> #include <console/console.h> #include <device/pci_type.h> #include <elog.h> @@ -88,14 +88,10 @@
void pch_log_state(void) { - struct chipset_power_state *ps = cbmem_find(CBMEM_ID_POWER_STATE); + const struct chipset_power_state *ps;
- if (ps == NULL) { - printk(BIOS_ERR, - "Not logging power state information. " - "Power state not found in cbmem.\n"); + if (acpi_pm_state_for_elog(&ps) < 0) return; - }
/* Power and Reset */ pch_log_power_and_resets(ps); diff --git a/src/soc/intel/apollolake/pmutil.c b/src/soc/intel/apollolake/pmutil.c index 6e96b57..9df246c 100644 --- a/src/soc/intel/apollolake/pmutil.c +++ b/src/soc/intel/apollolake/pmutil.c @@ -5,7 +5,7 @@ #include <acpi/acpi.h> #include <arch/io.h> #include <device/mmio.h> -#include <cbmem.h> +#include <acpi/acpi_pm.h> #include <console/console.h> #include <cpu/x86/msr.h> #include <device/device.h> @@ -146,7 +146,7 @@ *dw2 = config->gpe0_dw3; }
-void soc_fill_power_state(struct chipset_power_state *ps) +void soc_fill_acpi_pm(struct chipset_power_state *ps) { uintptr_t pmc_bar0 = read_pmc_mmio_bar();
@@ -185,12 +185,10 @@
int soc_get_rtc_failed(void) { - const struct chipset_power_state *ps = cbmem_find(CBMEM_ID_POWER_STATE); + const struct chipset_power_state *ps;
- if (!ps) { - printk(BIOS_ERR, "Could not find power state in cbmem, RTC init aborted\n"); + if (acpi_pm_state_for_rtc(&ps) < 0) return 1; - }
return rtc_failed(ps->gen_pmcon1); } diff --git a/src/soc/intel/baytrail/elog.c b/src/soc/intel/baytrail/elog.c index 7e92e90..b299c37 100644 --- a/src/soc/intel/baytrail/elog.c +++ b/src/soc/intel/baytrail/elog.c @@ -1,7 +1,7 @@ /* SPDX-License-Identifier: GPL-2.0-only */
#include <acpi/acpi.h> -#include <cbmem.h> +#include <acpi/acpi_pm.h> #include <console/console.h> #include <device/device.h> #include <device/pci.h> @@ -76,13 +76,10 @@
void southcluster_log_state(void) { - struct chipset_power_state *ps = cbmem_find(CBMEM_ID_POWER_STATE); + const struct chipset_power_state *ps;
- if (ps == NULL) { - printk(BIOS_DEBUG, - "Not logging power state information. Power state not found in cbmem.\n"); + if (acpi_pm_state_for_elog(&ps) < 0) return; - }
log_power_and_resets(ps); log_wake_events(ps); diff --git a/src/soc/intel/baytrail/pmutil.c b/src/soc/intel/baytrail/pmutil.c index cc1dd42..9f0fa02 100644 --- a/src/soc/intel/baytrail/pmutil.c +++ b/src/soc/intel/baytrail/pmutil.c @@ -8,7 +8,7 @@ #include <device/mmio.h> #include <device/pci.h> #include <device/pci_ops.h> -#include <cbmem.h> +#include <acpi/acpi_pm.h> #include <console/console.h>
#include <soc/iomap.h> @@ -349,7 +349,7 @@ { uint32_t gen_pmcon1; int rtc_fail; - struct chipset_power_state *ps = cbmem_find(CBMEM_ID_POWER_STATE); + struct chipset_power_state *ps = acpi_get_pm_state();
if (ps != NULL) gen_pmcon1 = ps->gen_pmcon1; diff --git a/src/soc/intel/baytrail/ramstage.c b/src/soc/intel/baytrail/ramstage.c index 1e7cc08..0c955e3 100644 --- a/src/soc/intel/baytrail/ramstage.c +++ b/src/soc/intel/baytrail/ramstage.c @@ -3,7 +3,7 @@ #include <arch/cpu.h> #include <acpi/acpi.h> #include <acpi/acpi_gnvs.h> -#include <cbmem.h> +#include <acpi/acpi_pm.h> #include <console/console.h> #include <cpu/intel/microcode.h> #include <cpu/x86/cr.h> @@ -119,7 +119,7 @@ /* Save bit index for first enabled event in PM1_STS for _SB._SWS */ static void save_acpi_wake_source(void) { - struct chipset_power_state *ps = cbmem_find(CBMEM_ID_POWER_STATE); + struct chipset_power_state *ps = acpi_get_pm_state(); struct global_nvs *gnvs = acpi_get_gnvs(); uint16_t pm1;
diff --git a/src/soc/intel/braswell/elog.c b/src/soc/intel/braswell/elog.c index 7e92e90..b299c37 100644 --- a/src/soc/intel/braswell/elog.c +++ b/src/soc/intel/braswell/elog.c @@ -1,7 +1,7 @@ /* SPDX-License-Identifier: GPL-2.0-only */
#include <acpi/acpi.h> -#include <cbmem.h> +#include <acpi/acpi_pm.h> #include <console/console.h> #include <device/device.h> #include <device/pci.h> @@ -76,13 +76,10 @@
void southcluster_log_state(void) { - struct chipset_power_state *ps = cbmem_find(CBMEM_ID_POWER_STATE); + const struct chipset_power_state *ps;
- if (ps == NULL) { - printk(BIOS_DEBUG, - "Not logging power state information. Power state not found in cbmem.\n"); + if (acpi_pm_state_for_elog(&ps) < 0) return; - }
log_power_and_resets(ps); log_wake_events(ps); diff --git a/src/soc/intel/braswell/ramstage.c b/src/soc/intel/braswell/ramstage.c index de90cb7..f49c760 100644 --- a/src/soc/intel/braswell/ramstage.c +++ b/src/soc/intel/braswell/ramstage.c @@ -2,7 +2,7 @@
#include <arch/cpu.h> #include <acpi/acpi.h> -#include <cbmem.h> +#include <acpi/acpi_pm.h> #include <console/console.h> #include <cpu/intel/microcode.h> #include <cpu/x86/cr.h> @@ -122,7 +122,7 @@ /* Save wake source information for calculating ACPI _SWS values */ int soc_fill_acpi_wake(uint32_t *pm1, uint32_t **gpe0) { - struct chipset_power_state *ps = cbmem_find(CBMEM_ID_POWER_STATE); + struct chipset_power_state *ps = acpi_get_pm_state(); static uint32_t gpe0_sts;
if (!ps) diff --git a/src/soc/intel/broadwell/pch/elog.c b/src/soc/intel/broadwell/pch/elog.c index 9271e27..0e604ad 100644 --- a/src/soc/intel/broadwell/pch/elog.c +++ b/src/soc/intel/broadwell/pch/elog.c @@ -1,7 +1,7 @@ /* SPDX-License-Identifier: GPL-2.0-only */
#include <bootstate.h> -#include <cbmem.h> +#include <acpi/acpi_pm.h> #include <console/console.h> #include <stdint.h> #include <elog.h> @@ -106,13 +106,10 @@
static void pch_log_state(void *unused) { - struct chipset_power_state *ps = cbmem_find(CBMEM_ID_POWER_STATE); + const struct chipset_power_state *ps;
- if (ps == NULL) { - printk(BIOS_ERR, "Not logging power state information. " - "Power state not found in cbmem.\n"); + if (acpi_pm_state_for_elog(&ps) < 0) return; - }
/* Power and Reset */ pch_log_power_and_resets(ps); diff --git a/src/soc/intel/broadwell/ramstage.c b/src/soc/intel/broadwell/ramstage.c index 418e469..93bc01d 100644 --- a/src/soc/intel/broadwell/ramstage.c +++ b/src/soc/intel/broadwell/ramstage.c @@ -2,7 +2,7 @@
#include <acpi/acpi.h> #include <acpi/acpi_gnvs.h> -#include <cbmem.h> +#include <acpi/acpi_pm.h> #include <console/console.h> #include <device/device.h> #include <string.h> @@ -14,7 +14,7 @@ /* Save bit index for PM1_STS and GPE_STS for ACPI _SWS */ static void save_acpi_wake_source(void) { - struct chipset_power_state *ps = cbmem_find(CBMEM_ID_POWER_STATE); + struct chipset_power_state *ps = acpi_get_pm_state(); struct global_nvs *gnvs = acpi_get_gnvs(); uint16_t pm1; int gpe_reg; diff --git a/src/soc/intel/cannonlake/pmutil.c b/src/soc/intel/cannonlake/pmutil.c index 785283c..64b434c 100644 --- a/src/soc/intel/cannonlake/pmutil.c +++ b/src/soc/intel/cannonlake/pmutil.c @@ -8,7 +8,7 @@ #define __SIMPLE_DEVICE__
#include <device/mmio.h> -#include <cbmem.h> +#include <acpi/acpi_pm.h> #include <device/device.h> #include <device/pci.h> #include <device/pci_def.h> @@ -180,12 +180,10 @@
int soc_get_rtc_failed(void) { - const struct chipset_power_state *ps = cbmem_find(CBMEM_ID_POWER_STATE); + const struct chipset_power_state *ps;
- if (!ps) { - printk(BIOS_ERR, "Could not find power state in cbmem, RTC init aborted\n"); + if (acpi_pm_state_for_rtc(&ps) < 0) return 1; - }
return rtc_failed(ps->gen_pmcon_b); } @@ -236,7 +234,7 @@ return prev_sleep_state; }
-void soc_fill_power_state(struct chipset_power_state *ps) +void soc_fill_acpi_pm(struct chipset_power_state *ps) { uint8_t *pmc;
diff --git a/src/soc/intel/common/block/acpi/acpi.c b/src/soc/intel/common/block/acpi/acpi.c index 65e5f44..1ec9f0d 100644 --- a/src/soc/intel/common/block/acpi/acpi.c +++ b/src/soc/intel/common/block/acpi/acpi.c @@ -6,7 +6,7 @@ #include <arch/ioapic.h> #include <arch/smp/mpspec.h> #include <bootstate.h> -#include <cbmem.h> +#include <acpi/acpi_pm.h> #include <cf9_reset.h> #include <console/console.h> #include <cpu/intel/turbo.h> @@ -213,7 +213,7 @@ uint32_t pm1_en; int i;
- ps = cbmem_find(CBMEM_ID_POWER_STATE); + ps = acpi_get_pm_state(); if (ps == NULL) return -1;
@@ -397,7 +397,7 @@ acpigen_write_CPPC_method(); }
-__weak void soc_power_states_generation(int core_id, +__weak void soc_acpi_pms_generation(int core_id, int cores_per_package) { } @@ -434,7 +434,7 @@ generate_cppc_entries(core_id);
/* Soc specific power states generation */ - soc_power_states_generation(core_id, num_virt); + soc_acpi_pms_generation(core_id, num_virt);
acpigen_pop_len(); } diff --git a/src/soc/intel/common/block/pmc/pmclib.c b/src/soc/intel/common/block/pmc/pmclib.c index 09af749..a12d64a 100644 --- a/src/soc/intel/common/block/pmc/pmclib.c +++ b/src/soc/intel/common/block/pmc/pmclib.c @@ -1,5 +1,6 @@ /* SPDX-License-Identifier: GPL-2.0-only */
+#include <acpi/acpi_pm.h> #include <arch/io.h> #include <bootmode.h> #include <device/mmio.h> @@ -17,7 +18,7 @@ #include <string.h> #include <timer.h>
-static struct chipset_power_state power_state; +static struct chipset_power_state acpi_pm;
/* List of Minimum Assertion durations in microseconds */ enum min_assert_dur { @@ -51,21 +52,21 @@ /* Default value of PchPmPwrCycDur */ #define PCH_PM_PWR_CYC_DUR 0
-struct chipset_power_state *pmc_get_power_state(void) +struct chipset_power_state *pmc_get_acpi_pm(void) { struct chipset_power_state *ptr = NULL;
if (cbmem_possibly_online()) - ptr = cbmem_find(CBMEM_ID_POWER_STATE); + ptr = acpi_get_pm_state();
/* cbmem is online but ptr is not populated yet */ if (ptr == NULL && !(ENV_RAMSTAGE || ENV_POSTCAR)) - return &power_state; + return &acpi_pm;
return ptr; }
-static void migrate_power_state(int is_recovery) +static void migrate_acpi_pm(int is_recovery) { struct chipset_power_state *ps_cbmem;
@@ -75,9 +76,9 @@ printk(BIOS_DEBUG, "Not adding power state to cbmem!\n"); return; } - memcpy(ps_cbmem, &power_state, sizeof(*ps_cbmem)); + memcpy(ps_cbmem, &acpi_pm, sizeof(*ps_cbmem)); } -ROMSTAGE_CBMEM_INIT_HOOK(migrate_power_state) +ROMSTAGE_CBMEM_INIT_HOOK(migrate_acpi_pm)
static void print_num_status_bits(int num_bits, uint32_t status, const char *const bit_names[]) @@ -107,7 +108,7 @@ struct chipset_power_state *ps; int prev_sleep_state = ACPI_S0;
- ps = pmc_get_power_state(); + ps = pmc_get_acpi_pm(); if (ps) prev_sleep_state = ps->prev_sleep_state;
@@ -426,11 +427,11 @@ i, ps->gpe0_sts[i], i, ps->gpe0_en[i]); }
- soc_fill_power_state(ps); + soc_fill_acpi_pm(ps); }
/* Reads and prints ACPI specific PM registers */ -int pmc_fill_power_state(struct chipset_power_state *ps) +int pmc_fill_acpi_pm(struct chipset_power_state *ps) { pmc_fill_pm_reg_info(ps);
diff --git a/src/soc/intel/elkhartlake/pmutil.c b/src/soc/intel/elkhartlake/pmutil.c index 4d5c04d..9c54c24 100644 --- a/src/soc/intel/elkhartlake/pmutil.c +++ b/src/soc/intel/elkhartlake/pmutil.c @@ -7,7 +7,7 @@
#define __SIMPLE_DEVICE__
-#include <cbmem.h> +#include <acpi/acpi_pm.h> #include <console/console.h> #include <device/device.h> #include <device/mmio.h> @@ -180,12 +180,10 @@
int soc_get_rtc_failed(void) { - const struct chipset_power_state *ps = cbmem_find(CBMEM_ID_POWER_STATE); + const struct chipset_power_state *ps;
- if (!ps) { - printk(BIOS_ERR, "Could not find power state in cbmem, RTC init aborted\n"); + if (acpi_pm_state_for_rtc(&ps) < 0) return 1; - }
return rtc_failed(ps->gen_pmcon_b); } @@ -236,7 +234,7 @@ return prev_sleep_state; }
-void soc_fill_power_state(struct chipset_power_state *ps) +void soc_fill_acpi_pm(struct chipset_power_state *ps) { uint8_t *pmc;
diff --git a/src/soc/intel/icelake/pmutil.c b/src/soc/intel/icelake/pmutil.c index 66cc73e..df2a566 100644 --- a/src/soc/intel/icelake/pmutil.c +++ b/src/soc/intel/icelake/pmutil.c @@ -8,7 +8,7 @@ #define __SIMPLE_DEVICE__
#include <device/mmio.h> -#include <cbmem.h> +#include <acpi/acpi_pm.h> #include <device/device.h> #include <device/pci.h> #include <device/pci_def.h> @@ -180,12 +180,10 @@
int soc_get_rtc_failed(void) { - const struct chipset_power_state *ps = cbmem_find(CBMEM_ID_POWER_STATE); + const struct chipset_power_state *ps;
- if (!ps) { - printk(BIOS_ERR, "Could not find power state in cbmem, RTC init aborted\n"); + if (acpi_pm_state_for_rtc(&ps) < 0) return 1; - }
return rtc_failed(ps->gen_pmcon_b); } @@ -236,7 +234,7 @@ return prev_sleep_state; }
-void soc_fill_power_state(struct chipset_power_state *ps) +void soc_fill_acpi_pm(struct chipset_power_state *ps) { uint8_t *pmc;
diff --git a/src/soc/intel/jasperlake/pmutil.c b/src/soc/intel/jasperlake/pmutil.c index ebe46b1..1f451df 100644 --- a/src/soc/intel/jasperlake/pmutil.c +++ b/src/soc/intel/jasperlake/pmutil.c @@ -8,7 +8,7 @@ #define __SIMPLE_DEVICE__
#include <device/mmio.h> -#include <cbmem.h> +#include <acpi/acpi_pm.h> #include <device/device.h> #include <device/pci.h> #include <device/pci_def.h> @@ -180,12 +180,10 @@
int soc_get_rtc_failed(void) { - const struct chipset_power_state *ps = cbmem_find(CBMEM_ID_POWER_STATE); + const struct chipset_power_state *ps;
- if (!ps) { - printk(BIOS_ERR, "Could not find power state in cbmem, RTC init aborted\n"); + if (acpi_pm_state_for_rtc(&ps) < 0) return 1; - }
return rtc_failed(ps->gen_pmcon_b); } @@ -236,7 +234,7 @@ return prev_sleep_state; }
-void soc_fill_power_state(struct chipset_power_state *ps) +void soc_fill_acpi_pm(struct chipset_power_state *ps) { uint8_t *pmc;
diff --git a/src/soc/intel/skylake/acpi.c b/src/soc/intel/skylake/acpi.c index 99a52d1..8c02d5c 100644 --- a/src/soc/intel/skylake/acpi.c +++ b/src/soc/intel/skylake/acpi.c @@ -6,7 +6,7 @@ #include <arch/cpu.h> #include <arch/ioapic.h> #include <arch/smp/mpspec.h> -#include <cbmem.h> +#include <acpi/acpi_pm.h> #include <console/console.h> #include <cpu/x86/smm.h> #include <cpu/x86/msr.h> @@ -530,7 +530,7 @@ int i; const int last_index = GPE0_REG_MAX - 1;
- ps = cbmem_find(CBMEM_ID_POWER_STATE); + ps = acpi_get_pm_state(); if (ps == NULL) return -1;
diff --git a/src/soc/intel/skylake/elog.c b/src/soc/intel/skylake/elog.c index 1332e2d..da0b91d 100644 --- a/src/soc/intel/skylake/elog.c +++ b/src/soc/intel/skylake/elog.c @@ -1,7 +1,7 @@ /* SPDX-License-Identifier: GPL-2.0-only */
#include <bootstate.h> -#include <cbmem.h> +#include <acpi/acpi_pm.h> #include <commonlib/helpers.h> #include <console/console.h> #include <device/mmio.h> @@ -231,13 +231,10 @@
static void pch_log_state(void *unused) { - struct chipset_power_state *ps = cbmem_find(CBMEM_ID_POWER_STATE); + const struct chipset_power_state *ps;
- if (ps == NULL) { - printk(BIOS_ERR, - "Not logging power state information. Power state not found in cbmem.\n"); + if (acpi_pm_state_for_elog(&ps) < 0) return; - }
/* Power and Reset */ pch_log_power_and_resets(ps); diff --git a/src/soc/intel/tigerlake/pmutil.c b/src/soc/intel/tigerlake/pmutil.c index f2ff483..572ca8e 100644 --- a/src/soc/intel/tigerlake/pmutil.c +++ b/src/soc/intel/tigerlake/pmutil.c @@ -14,7 +14,7 @@ #define __SIMPLE_DEVICE__
#include <device/mmio.h> -#include <cbmem.h> +#include <acpi/acpi_pm.h> #include <device/device.h> #include <device/pci.h> #include <device/pci_def.h> @@ -186,12 +186,10 @@
int soc_get_rtc_failed(void) { - const struct chipset_power_state *ps = cbmem_find(CBMEM_ID_POWER_STATE); + const struct chipset_power_state *ps;
- if (!ps) { - printk(BIOS_ERR, "Could not find power state in cbmem, RTC init aborted\n"); + if (acpi_pm_state_for_rtc(&ps) < 0) return 1; - }
return rtc_failed(ps->gen_pmcon_b); } @@ -242,7 +240,7 @@ return prev_sleep_state; }
-void soc_fill_power_state(struct chipset_power_state *ps) +void soc_fill_acpi_pm(struct chipset_power_state *ps) { uint8_t *pmc;