summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyösti Mälkki <kyosti.malkki@gmail.com>2020-06-07 12:01:58 +0300
committerAngel Pons <th3fanbus@gmail.com>2020-11-19 22:58:41 +0000
commite0d38680d4daeeebc2fcc580c23b7305be577ac2 (patch)
tree419c1136aef2520dff5a528653cf8723ba26f6f8
parent4a3f67a9f22f52c2f495cf3708ffb2a92bd9fa70 (diff)
downloadcoreboot-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.c9
-rw-r--r--src/acpi/acpi_pm.c19
-rw-r--r--src/include/acpi/acpi.h2
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);