diff options
author | Fabio Aiuto <fabioaiuto83@gmail.com> | 2022-09-11 12:25:13 +0200 |
---|---|---|
committer | Felix Held <felix-coreboot@felixheld.de> | 2022-09-27 14:19:01 +0000 |
commit | fdcf698a89ebfe2316fc6ef2f94df7c8203a7f4b (patch) | |
tree | e88b014b82bcf76b546c7c1010d208ee337bf494 | |
parent | e6d6d3620e20f6eddf92f71e30a7e0c47d403489 (diff) |
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 <fabioaiuto83@gmail.com>
Change-Id: I8addc0b05f9e360afc52091c4bb731341d7213cf
Reviewed-on: https://review.coreboot.org/c/coreboot/+/67618
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Felix Held <felix-coreboot@felixheld.de>
-rw-r--r-- | src/acpi/acpi_pm.c | 34 | ||||
-rw-r--r-- | src/include/acpi/acpi_pm.h | 12 | ||||
-rw-r--r-- | src/soc/amd/common/block/acpi/acpi.c | 2 | ||||
-rw-r--r-- | src/soc/amd/common/block/acpi/pm_state.c | 2 | ||||
-rw-r--r-- | src/soc/amd/common/block/gpio/gpio.c | 2 | ||||
-rw-r--r-- | src/soc/intel/alderlake/pmutil.c | 2 | ||||
-rw-r--r-- | src/soc/intel/apollolake/elog.c | 2 | ||||
-rw-r--r-- | src/soc/intel/apollolake/pmutil.c | 2 | ||||
-rw-r--r-- | src/soc/intel/baytrail/elog.c | 2 | ||||
-rw-r--r-- | src/soc/intel/baytrail/ramstage.c | 2 | ||||
-rw-r--r-- | src/soc/intel/braswell/elog.c | 2 | ||||
-rw-r--r-- | src/soc/intel/broadwell/pch/elog.c | 2 | ||||
-rw-r--r-- | src/soc/intel/broadwell/pch/ramstage.c | 2 | ||||
-rw-r--r-- | src/soc/intel/cannonlake/pmutil.c | 2 | ||||
-rw-r--r-- | src/soc/intel/common/block/acpi/acpi_wake_source.c | 2 | ||||
-rw-r--r-- | src/soc/intel/elkhartlake/pmutil.c | 2 | ||||
-rw-r--r-- | src/soc/intel/icelake/pmutil.c | 2 | ||||
-rw-r--r-- | src/soc/intel/jasperlake/pmutil.c | 2 | ||||
-rw-r--r-- | src/soc/intel/meteorlake/pmutil.c | 2 | ||||
-rw-r--r-- | src/soc/intel/skylake/elog.c | 2 | ||||
-rw-r--r-- | 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 bee5616e57..40a3fbd7ad 100644 --- a/src/acpi/acpi_pm.c +++ b/src/acpi/acpi_pm.c @@ -2,10 +2,17 @@ #include <acpi/acpi.h> #include <acpi/acpi_pm.h> +#include <assert.h> #include <cbmem.h> #include <console/console.h> #include <smbios.h> +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 48342a3ac8..584265edde 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 9e4010d340..75d4adf811 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 787b732353..ccfef0a752 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 468d7aef70..e8203a1f15 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 f8b858f8fe..9389322b31 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 1f650400a8..f500b93e6d 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 4623017141..f4745531fb 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 b49c7c8318..f732fabc0f 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 42f371ce3d..26de1cbc20 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 b49c7c8318..f732fabc0f 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 789b4e84a7..e3e8c0cab1 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 9794d4e08a..027b3bb1c9 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 d60c8a2ad5..7df8d47fd9 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 0e2cb4e1c4..d45fd9663b 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 0109215f2d..76a9cd34bc 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 b7829b22b7..9297ffd0b8 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 fb1aecd7fc..f2a4c90d67 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 b9f28dedc4..974f966197 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 1c80517351..1761671e67 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 e854385346..9aca5c2b2c 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); |