Angel Pons has submitted this change. ( 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 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 --- M src/acpi/acpi.c M src/acpi/acpi_pm.c M src/include/acpi/acpi.h 3 files changed, 22 insertions(+), 8 deletions(-)
Approvals: build bot (Jenkins): Verified Felix Held: Looks good to me, approved Angel Pons: Looks good to me, approved
diff --git a/src/acpi/acpi.c b/src/acpi/acpi.c index 5fb2422..abc6e01 100644 --- a/src/acpi/acpi.c +++ b/src/acpi/acpi.c @@ -1251,14 +1251,7 @@ /* 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 cecf878..540b6d2 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 @@ 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 839d485..f6eb772 100644 --- a/src/include/acpi/acpi.h +++ b/src/include/acpi/acpi.h @@ -1045,6 +1045,8 @@ } #endif
+uint8_t acpi_get_preferred_pm_profile(void); + /* Returns ACPI_Sx values. */ int acpi_get_sleep_type(void);