Kyösti Mälkki has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/42140 )
Change subject: ACPI: Define acpi_get_preferred_pm_profile() ......................................................................
ACPI: Define acpi_get_preferred_pm_profile()
Change-Id: I2e7f22ccccc6c0df8e7e9f354c50893a53a41714 Signed-off-by: Kyösti Mälkki kyosti.malkki@gmail.com --- M src/acpi/acpi.c M src/arch/x86/Makefile.inc A src/arch/x86/acpi_pm.c M src/include/acpi/acpi.h 4 files changed, 27 insertions(+), 8 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/40/42140/1
diff --git a/src/acpi/acpi.c b/src/acpi/acpi.c index 8bf4b49..24c6911 100644 --- a/src/acpi/acpi.c +++ b/src/acpi/acpi.c @@ -1245,14 +1245,7 @@ fadt->x_dsdt_l = (unsigned long)dsdt; fadt->x_dsdt_h = 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();
acpi_fill_fadt(fadt);
diff --git a/src/arch/x86/Makefile.inc b/src/arch/x86/Makefile.inc index 0dd8d2b..d290c26 100644 --- a/src/arch/x86/Makefile.inc +++ b/src/arch/x86/Makefile.inc @@ -227,6 +227,7 @@
ifeq ($(CONFIG_ARCH_RAMSTAGE_X86_32)$(CONFIG_ARCH_RAMSTAGE_X86_64),y)
+ramstage-y += acpi_pm.c ramstage-$(CONFIG_HAVE_ACPI_RESUME) += acpi_s3.c ramstage-$(CONFIG_ACPI_BERT) += acpi_bert_storage.c ramstage-y += c_start.S diff --git a/src/arch/x86/acpi_pm.c b/src/arch/x86/acpi_pm.c new file mode 100644 index 0000000..edc6706 --- /dev/null +++ b/src/arch/x86/acpi_pm.c @@ -0,0 +1,23 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#include <acpi/acpi.h> +#include <smbios.h> + +uint8_t acpi_get_preferred_pm_profile(void) +{ + int enclosure = smbios_mainboard_enclosure_type(); + + switch (enclosure) { + 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 e6c18c2..b3f70d6 100644 --- a/src/include/acpi/acpi.h +++ b/src/include/acpi/acpi.h @@ -1013,6 +1013,8 @@ } #endif
+uint8_t acpi_get_preferred_pm_profile(void); + /* Returns ACPI_Sx values. */ int acpi_get_sleep_type(void);