diff options
author | Kyösti Mälkki <kyosti.malkki@gmail.com> | 2020-06-07 12:01:58 +0300 |
---|---|---|
committer | Angel Pons <th3fanbus@gmail.com> | 2020-11-19 22:58:41 +0000 |
commit | e0d38680d4daeeebc2fcc580c23b7305be577ac2 (patch) | |
tree | 419c1136aef2520dff5a528653cf8723ba26f6f8 | |
parent | 4a3f67a9f22f52c2f495cf3708ffb2a92bd9fa70 (diff) | |
download | coreboot-e0d38680d4daeeebc2fcc580c23b7305be577ac2.tar.xz |
ACPI: Define acpi_get_preferred_pm_profile()
Change-Id: I2e7f22ccccc6c0df8e7e9f354c50893a53a41714
Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/42140
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Reviewed-by: Felix Held <felix-coreboot@felixheld.de>
-rw-r--r-- | src/acpi/acpi.c | 9 | ||||
-rw-r--r-- | src/acpi/acpi_pm.c | 19 | ||||
-rw-r--r-- | src/include/acpi/acpi.h | 2 |
3 files changed, 22 insertions, 8 deletions
diff --git a/src/acpi/acpi.c b/src/acpi/acpi.c index 5fb2422cdb..abc6e01b0a 100644 --- a/src/acpi/acpi.c +++ b/src/acpi/acpi.c @@ -1251,14 +1251,7 @@ void acpi_create_fadt(acpi_fadt_t *fadt, acpi_facs_t *facs, void *dsdt) /* should be 0 ACPI 3.0 */ fadt->reserved = 0; - if (CONFIG(SYSTEM_TYPE_CONVERTIBLE) || - CONFIG(SYSTEM_TYPE_LAPTOP)) - fadt->preferred_pm_profile = PM_MOBILE; - else if (CONFIG(SYSTEM_TYPE_DETACHABLE) || - CONFIG(SYSTEM_TYPE_TABLET)) - fadt->preferred_pm_profile = PM_TABLET; - else - fadt->preferred_pm_profile = PM_DESKTOP; + fadt->preferred_pm_profile = acpi_get_preferred_pm_profile(); arch_fill_fadt(fadt); diff --git a/src/acpi/acpi_pm.c b/src/acpi/acpi_pm.c index cecf878910..540b6d2bee 100644 --- a/src/acpi/acpi_pm.c +++ b/src/acpi/acpi_pm.c @@ -3,6 +3,7 @@ #include <acpi/acpi.h> #include <console/console.h> #include <romstage_handoff.h> +#include <smbios.h> /* This is filled with acpi_handoff_wakeup_s3() call early in ramstage. */ static int acpi_slp_type = -1; @@ -29,3 +30,21 @@ int acpi_handoff_wakeup_s3(void) void __weak mainboard_suspend_resume(void) { } + +/* Default mapping to ACPI FADT preferred_pm_profile field. */ +uint8_t acpi_get_preferred_pm_profile(void) +{ + switch (smbios_mainboard_enclosure_type()) { + case SMBIOS_ENCLOSURE_LAPTOP: + case SMBIOS_ENCLOSURE_CONVERTIBLE: + return PM_MOBILE; + case SMBIOS_ENCLOSURE_DETACHABLE: + case SMBIOS_ENCLOSURE_TABLET: + return PM_TABLET; + case SMBIOS_ENCLOSURE_DESKTOP: + return PM_DESKTOP; + case SMBIOS_ENCLOSURE_UNKNOWN: + default: + return PM_UNSPECIFIED; + } +} diff --git a/src/include/acpi/acpi.h b/src/include/acpi/acpi.h index 839d485990..f6eb772ac7 100644 --- a/src/include/acpi/acpi.h +++ b/src/include/acpi/acpi.h @@ -1045,6 +1045,8 @@ static inline int acpi_sleep_from_pm1(uint32_t pm1_cnt) } #endif +uint8_t acpi_get_preferred_pm_profile(void); + /* Returns ACPI_Sx values. */ int acpi_get_sleep_type(void); |