From fdcf698a89ebfe2316fc6ef2f94df7c8203a7f4b Mon Sep 17 00:00:00 2001 From: Fabio Aiuto Date: Sun, 11 Sep 2022 12:25:13 +0200 Subject: acpi/acpi_pm.c: refactor acpi_pm_state_for_* functions Use just one function to get the chipset powerstate and add an argument to specify the powerstate claimer {RTC,ELOG,WAKE} and adjust the failure log accordingly. TEST: compile tested and qemu emulation successfully run Signed-off-by: Fabio Aiuto Change-Id: I8addc0b05f9e360afc52091c4bb731341d7213cf Reviewed-on: https://review.coreboot.org/c/coreboot/+/67618 Tested-by: build bot (Jenkins) Reviewed-by: Felix Held --- src/acpi/acpi_pm.c | 34 +++++++++------------- src/include/acpi/acpi_pm.h | 12 ++++++-- src/soc/amd/common/block/acpi/acpi.c | 2 +- src/soc/amd/common/block/acpi/pm_state.c | 2 +- src/soc/amd/common/block/gpio/gpio.c | 2 +- src/soc/intel/alderlake/pmutil.c | 2 +- src/soc/intel/apollolake/elog.c | 2 +- src/soc/intel/apollolake/pmutil.c | 2 +- src/soc/intel/baytrail/elog.c | 2 +- src/soc/intel/baytrail/ramstage.c | 2 +- src/soc/intel/braswell/elog.c | 2 +- src/soc/intel/broadwell/pch/elog.c | 2 +- src/soc/intel/broadwell/pch/ramstage.c | 2 +- src/soc/intel/cannonlake/pmutil.c | 2 +- src/soc/intel/common/block/acpi/acpi_wake_source.c | 2 +- src/soc/intel/elkhartlake/pmutil.c | 2 +- src/soc/intel/icelake/pmutil.c | 2 +- src/soc/intel/jasperlake/pmutil.c | 2 +- src/soc/intel/meteorlake/pmutil.c | 2 +- src/soc/intel/skylake/elog.c | 2 +- src/soc/intel/tigerlake/pmutil.c | 2 +- 21 files changed, 41 insertions(+), 43 deletions(-) diff --git a/src/acpi/acpi_pm.c b/src/acpi/acpi_pm.c index bee5616e57db..40a3fbd7ad2d 100644 --- a/src/acpi/acpi_pm.c +++ b/src/acpi/acpi_pm.c @@ -2,10 +2,17 @@ #include #include +#include #include #include #include +static const char *pm_fetch_failure_msg[PS_CLAIMER_MAX] = { + [PS_CLAIMER_ELOG] = "no event recorded in ELOG.", + [PS_CLAIMER_RTC] = "RTC init aborted.", + [PS_CLAIMER_WAKE] = "wake source unknown.", +}; + void __weak mainboard_suspend_resume(void) { } @@ -38,31 +45,16 @@ struct chipset_power_state *acpi_get_pm_state(void) 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 recorded in ELOG.\n"); - return -1; - } - return 0; -} - -int acpi_pm_state_for_rtc(const struct chipset_power_state **ps) +int acpi_fetch_pm_state(const struct chipset_power_state **ps, + enum power_state_claimer ps_claimer) { + assert(ps_claimer < PS_CLAIMER_MAX); *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"); + printk(BIOS_ERR, "No CBMEM_ID_POWER_STATE entry, %s\n", + ps_claimer < PS_CLAIMER_MAX ? + pm_fetch_failure_msg[ps_claimer] : "unknown claimer."); return -1; } return 0; diff --git a/src/include/acpi/acpi_pm.h b/src/include/acpi/acpi_pm.h index 48342a3ac870..584265edde56 100644 --- a/src/include/acpi/acpi_pm.h +++ b/src/include/acpi/acpi_pm.h @@ -3,10 +3,16 @@ #ifndef ACPI_PM_H #define ACPI_PM_H +enum power_state_claimer { + PS_CLAIMER_ELOG, + PS_CLAIMER_RTC, + PS_CLAIMER_WAKE, + PS_CLAIMER_MAX /* Not a valid value, needs to be last element */ +}; + struct chipset_power_state; struct chipset_power_state *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); +int acpi_fetch_pm_state(const struct chipset_power_state **ps, + enum power_state_claimer ps_claimer); #endif diff --git a/src/soc/amd/common/block/acpi/acpi.c b/src/soc/amd/common/block/acpi/acpi.c index 9e4010d34044..75d4adf8114e 100644 --- a/src/soc/amd/common/block/acpi/acpi.c +++ b/src/soc/amd/common/block/acpi/acpi.c @@ -79,7 +79,7 @@ void acpi_pm_gpe_add_events_print_events(void) const struct chipset_power_state *ps; const struct acpi_pm_gpe_state *state; - if (acpi_pm_state_for_elog(&ps) < 0) + if (acpi_fetch_pm_state(&ps, PS_CLAIMER_ELOG) < 0) return; state = &ps->gpe_state; diff --git a/src/soc/amd/common/block/acpi/pm_state.c b/src/soc/amd/common/block/acpi/pm_state.c index 787b7323532d..ccfef0a7522d 100644 --- a/src/soc/amd/common/block/acpi/pm_state.c +++ b/src/soc/amd/common/block/acpi/pm_state.c @@ -50,7 +50,7 @@ static void acpi_save_wake_source(void *unused) if (acpi_reset_gnvs_for_wake(&gnvs) < 0) return; - if (acpi_pm_state_for_wake(&ps) < 0) + if (acpi_fetch_pm_state(&ps, PS_CLAIMER_WAKE) < 0) return; pm_fill_gnvs(gnvs, &ps->gpe_state); diff --git a/src/soc/amd/common/block/gpio/gpio.c b/src/soc/amd/common/block/gpio/gpio.c index 468d7aef703b..e8203a1f1579 100644 --- a/src/soc/amd/common/block/gpio/gpio.c +++ b/src/soc/amd/common/block/gpio/gpio.c @@ -386,7 +386,7 @@ void gpio_add_events(void) unsigned int i; unsigned int end; - if (acpi_pm_state_for_elog(&ps) < 0) + if (acpi_fetch_pm_state(&ps, PS_CLAIMER_ELOG) < 0) return; state = &ps->gpio_state; diff --git a/src/soc/intel/alderlake/pmutil.c b/src/soc/intel/alderlake/pmutil.c index f8b858f8feb3..9389322b3141 100644 --- a/src/soc/intel/alderlake/pmutil.c +++ b/src/soc/intel/alderlake/pmutil.c @@ -175,7 +175,7 @@ int soc_get_rtc_failed(void) { const struct chipset_power_state *ps; - if (acpi_pm_state_for_rtc(&ps) < 0) + if (acpi_fetch_pm_state(&ps, PS_CLAIMER_RTC) < 0) return 1; return rtc_failed(ps->gen_pmcon_b); diff --git a/src/soc/intel/apollolake/elog.c b/src/soc/intel/apollolake/elog.c index 1f650400a818..f500b93e6d77 100644 --- a/src/soc/intel/apollolake/elog.c +++ b/src/soc/intel/apollolake/elog.c @@ -89,7 +89,7 @@ void pch_log_state(void) { const struct chipset_power_state *ps; - if (acpi_pm_state_for_elog(&ps) < 0) + if (acpi_fetch_pm_state(&ps, PS_CLAIMER_ELOG) < 0) return; /* Power and Reset */ diff --git a/src/soc/intel/apollolake/pmutil.c b/src/soc/intel/apollolake/pmutil.c index 4623017141eb..f4745531fb70 100644 --- a/src/soc/intel/apollolake/pmutil.c +++ b/src/soc/intel/apollolake/pmutil.c @@ -191,7 +191,7 @@ int soc_get_rtc_failed(void) { const struct chipset_power_state *ps; - if (acpi_pm_state_for_rtc(&ps) < 0) + if (acpi_fetch_pm_state(&ps, PS_CLAIMER_RTC) < 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 b49c7c83188a..f732fabc0f2f 100644 --- a/src/soc/intel/baytrail/elog.c +++ b/src/soc/intel/baytrail/elog.c @@ -77,7 +77,7 @@ void southcluster_log_state(void) { const struct chipset_power_state *ps; - if (acpi_pm_state_for_elog(&ps) < 0) + if (acpi_fetch_pm_state(&ps, PS_CLAIMER_ELOG) < 0) return; log_power_and_resets(ps); diff --git a/src/soc/intel/baytrail/ramstage.c b/src/soc/intel/baytrail/ramstage.c index 42f371ce3ded..26de1cbc2077 100644 --- a/src/soc/intel/baytrail/ramstage.c +++ b/src/soc/intel/baytrail/ramstage.c @@ -147,7 +147,7 @@ static void acpi_save_wake_source(void *unused) if (acpi_reset_gnvs_for_wake(&gnvs) < 0) return; - if (acpi_pm_state_for_wake(&ps) < 0) + if (acpi_fetch_pm_state(&ps, PS_CLAIMER_WAKE) < 0) return; pm_fill_gnvs(gnvs, ps); diff --git a/src/soc/intel/braswell/elog.c b/src/soc/intel/braswell/elog.c index b49c7c83188a..f732fabc0f2f 100644 --- a/src/soc/intel/braswell/elog.c +++ b/src/soc/intel/braswell/elog.c @@ -77,7 +77,7 @@ void southcluster_log_state(void) { const struct chipset_power_state *ps; - if (acpi_pm_state_for_elog(&ps) < 0) + if (acpi_fetch_pm_state(&ps, PS_CLAIMER_ELOG) < 0) return; log_power_and_resets(ps); diff --git a/src/soc/intel/broadwell/pch/elog.c b/src/soc/intel/broadwell/pch/elog.c index 789b4e84a790..e3e8c0cab16f 100644 --- a/src/soc/intel/broadwell/pch/elog.c +++ b/src/soc/intel/broadwell/pch/elog.c @@ -107,7 +107,7 @@ static void pch_log_state(void *unused) { const struct chipset_power_state *ps; - if (acpi_pm_state_for_elog(&ps) < 0) + if (acpi_fetch_pm_state(&ps, PS_CLAIMER_ELOG) < 0) return; /* Power and Reset */ diff --git a/src/soc/intel/broadwell/pch/ramstage.c b/src/soc/intel/broadwell/pch/ramstage.c index 9794d4e08a10..027b3bb1c92f 100644 --- a/src/soc/intel/broadwell/pch/ramstage.c +++ b/src/soc/intel/broadwell/pch/ramstage.c @@ -51,7 +51,7 @@ static void acpi_save_wake_source(void *unused) if (acpi_reset_gnvs_for_wake(&gnvs) < 0) return; - if (acpi_pm_state_for_wake(&ps) < 0) + if (acpi_fetch_pm_state(&ps, PS_CLAIMER_WAKE) < 0) return; pm_fill_gnvs(gnvs, ps); diff --git a/src/soc/intel/cannonlake/pmutil.c b/src/soc/intel/cannonlake/pmutil.c index d60c8a2ad585..7df8d47fd9d0 100644 --- a/src/soc/intel/cannonlake/pmutil.c +++ b/src/soc/intel/cannonlake/pmutil.c @@ -168,7 +168,7 @@ int soc_get_rtc_failed(void) { const struct chipset_power_state *ps; - if (acpi_pm_state_for_rtc(&ps) < 0) + if (acpi_fetch_pm_state(&ps, PS_CLAIMER_RTC) < 0) return 1; return rtc_failed(ps->gen_pmcon_b); diff --git a/src/soc/intel/common/block/acpi/acpi_wake_source.c b/src/soc/intel/common/block/acpi/acpi_wake_source.c index 0e2cb4e1c4f6..d45fd9663b03 100644 --- a/src/soc/intel/common/block/acpi/acpi_wake_source.c +++ b/src/soc/intel/common/block/acpi/acpi_wake_source.c @@ -54,7 +54,7 @@ static void acpi_save_wake_source(void *unused) if (acpi_reset_gnvs_for_wake(&gnvs) < 0) return; - if (acpi_pm_state_for_wake(&ps) < 0) + if (acpi_fetch_pm_state(&ps, PS_CLAIMER_WAKE) < 0) return; pm_fill_gnvs(gnvs, ps); diff --git a/src/soc/intel/elkhartlake/pmutil.c b/src/soc/intel/elkhartlake/pmutil.c index 0109215f2d16..76a9cd34bcd7 100644 --- a/src/soc/intel/elkhartlake/pmutil.c +++ b/src/soc/intel/elkhartlake/pmutil.c @@ -184,7 +184,7 @@ int soc_get_rtc_failed(void) { const struct chipset_power_state *ps; - if (acpi_pm_state_for_rtc(&ps) < 0) + if (acpi_fetch_pm_state(&ps, PS_CLAIMER_RTC) < 0) return 1; return check_rtc_failed(ps->gen_pmcon_b); diff --git a/src/soc/intel/icelake/pmutil.c b/src/soc/intel/icelake/pmutil.c index b7829b22b70c..9297ffd0b8b5 100644 --- a/src/soc/intel/icelake/pmutil.c +++ b/src/soc/intel/icelake/pmutil.c @@ -184,7 +184,7 @@ int soc_get_rtc_failed(void) { const struct chipset_power_state *ps; - if (acpi_pm_state_for_rtc(&ps) < 0) + if (acpi_fetch_pm_state(&ps, PS_CLAIMER_RTC) < 0) return 1; return check_rtc_failed(ps->gen_pmcon_b); diff --git a/src/soc/intel/jasperlake/pmutil.c b/src/soc/intel/jasperlake/pmutil.c index fb1aecd7fc58..f2a4c90d6795 100644 --- a/src/soc/intel/jasperlake/pmutil.c +++ b/src/soc/intel/jasperlake/pmutil.c @@ -184,7 +184,7 @@ int soc_get_rtc_failed(void) { const struct chipset_power_state *ps; - if (acpi_pm_state_for_rtc(&ps) < 0) + if (acpi_fetch_pm_state(&ps, PS_CLAIMER_RTC) < 0) return 1; return check_rtc_failed(ps->gen_pmcon_b); diff --git a/src/soc/intel/meteorlake/pmutil.c b/src/soc/intel/meteorlake/pmutil.c index b9f28dedc477..974f96619721 100644 --- a/src/soc/intel/meteorlake/pmutil.c +++ b/src/soc/intel/meteorlake/pmutil.c @@ -166,7 +166,7 @@ int soc_get_rtc_failed(void) { const struct chipset_power_state *ps; - if (acpi_pm_state_for_rtc(&ps) < 0) + if (acpi_fetch_pm_state(&ps, PS_CLAIMER_RTC) < 0) return 1; return rtc_failed(ps->gen_pmcon_b); diff --git a/src/soc/intel/skylake/elog.c b/src/soc/intel/skylake/elog.c index 1c8051735143..1761671e677a 100644 --- a/src/soc/intel/skylake/elog.c +++ b/src/soc/intel/skylake/elog.c @@ -232,7 +232,7 @@ static void pch_log_state(void *unused) { const struct chipset_power_state *ps; - if (acpi_pm_state_for_elog(&ps) < 0) + if (acpi_fetch_pm_state(&ps, PS_CLAIMER_ELOG) < 0) return; /* Power and Reset */ diff --git a/src/soc/intel/tigerlake/pmutil.c b/src/soc/intel/tigerlake/pmutil.c index e85438534667..9aca5c2b2cc7 100644 --- a/src/soc/intel/tigerlake/pmutil.c +++ b/src/soc/intel/tigerlake/pmutil.c @@ -190,7 +190,7 @@ int soc_get_rtc_failed(void) { const struct chipset_power_state *ps; - if (acpi_pm_state_for_rtc(&ps) < 0) + if (acpi_fetch_pm_state(&ps, PS_CLAIMER_RTC) < 0) return 1; return check_rtc_failed(ps->gen_pmcon_b); -- cgit v1.2.3