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);
Angel Pons has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/42140 )
Change subject: ACPI: Define acpi_get_preferred_pm_profile() ......................................................................
Patch Set 1: Code-Review+1
(1 comment)
https://review.coreboot.org/c/coreboot/+/42140/1/src/arch/x86/acpi_pm.c File src/arch/x86/acpi_pm.c:
https://review.coreboot.org/c/coreboot/+/42140/1/src/arch/x86/acpi_pm.c@8 PS1, Line 8: int enclosure = smbios_mainboard_enclosure_type(); Do we need this variable?
HAOUAS Elyes has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/42140 )
Change subject: ACPI: Define acpi_get_preferred_pm_profile() ......................................................................
Patch Set 1: Code-Review+2
Kyösti Mälkki has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/42140 )
Change subject: ACPI: Define acpi_get_preferred_pm_profile() ......................................................................
Patch Set 1:
(1 comment)
https://review.coreboot.org/c/coreboot/+/42140/1/src/arch/x86/acpi_pm.c File src/arch/x86/acpi_pm.c:
https://review.coreboot.org/c/coreboot/+/42140/1/src/arch/x86/acpi_pm.c@8 PS1, Line 8: int enclosure = smbios_mainboard_enclosure_type();
Do we need this variable?
I thought of adding second switch that stringifies the enum name on console.
Angel Pons has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/42140 )
Change subject: ACPI: Define acpi_get_preferred_pm_profile() ......................................................................
Patch Set 1:
(1 comment)
https://review.coreboot.org/c/coreboot/+/42140/1/src/arch/x86/acpi_pm.c File src/arch/x86/acpi_pm.c:
https://review.coreboot.org/c/coreboot/+/42140/1/src/arch/x86/acpi_pm.c@8 PS1, Line 8: int enclosure = smbios_mainboard_enclosure_type();
I thought of adding second switch that stringifies the enum name on console.
ah, okay. in any case, I'd make it const
Hello build bot (Jenkins), Patrick Georgi, Martin Roth, Angel Pons, HAOUAS Elyes,
I'd like you to reexamine a change. Please visit
https://review.coreboot.org/c/coreboot/+/42140
to look at the new patch set (#2).
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/2
Hello build bot (Jenkins), Patrick Georgi, Martin Roth, Angel Pons, HAOUAS Elyes,
I'd like you to reexamine a change. Please visit
https://review.coreboot.org/c/coreboot/+/42140
to look at the new patch set (#3).
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, 28 insertions(+), 8 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/40/42140/3
Kyösti Mälkki has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/42140 )
Change subject: ACPI: Define acpi_get_preferred_pm_profile() ......................................................................
Patch Set 3:
(1 comment)
https://review.coreboot.org/c/coreboot/+/42140/1/src/arch/x86/acpi_pm.c File src/arch/x86/acpi_pm.c:
https://review.coreboot.org/c/coreboot/+/42140/1/src/arch/x86/acpi_pm.c@8 PS1, Line 8: int enclosure = smbios_mainboard_enclosure_type();
ah, okay. […]
Done
Patrick Rudolph has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/42140 )
Change subject: ACPI: Define acpi_get_preferred_pm_profile() ......................................................................
Patch Set 3: Code-Review+2
Paul Menzel has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/42140 )
Change subject: ACPI: Define acpi_get_preferred_pm_profile() ......................................................................
Patch Set 3: Code-Review+1
Raul Rangel has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/42140 )
Change subject: ACPI: Define acpi_get_preferred_pm_profile() ......................................................................
Patch Set 3:
(1 comment)
https://review.coreboot.org/c/coreboot/+/42140/3/src/arch/x86/acpi_pm.c File src/arch/x86/acpi_pm.c:
PS3: Can this file go in src/acpi?
Kyösti Mälkki has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/42140 )
Change subject: ACPI: Define acpi_get_preferred_pm_profile() ......................................................................
Patch Set 3:
(1 comment)
https://review.coreboot.org/c/coreboot/+/42140/3/src/arch/x86/acpi_pm.c File src/arch/x86/acpi_pm.c:
PS3:
Can this file go in src/acpi?
I was not sure if smbios is x86-only thing. The header is not in arch/x86 though.
Patrick Rudolph has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/42140 )
Change subject: ACPI: Define acpi_get_preferred_pm_profile() ......................................................................
Patch Set 3:
(1 comment)
https://review.coreboot.org/c/coreboot/+/42140/3/src/arch/x86/acpi_pm.c File src/arch/x86/acpi_pm.c:
PS3:
I was not sure if smbios is x86-only thing. The header is not in arch/x86 though.
Both could be used outside of x86 world, but coreboot doesn't support that (yet).
Kyösti Mälkki has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/42140 )
Change subject: ACPI: Define acpi_get_preferred_pm_profile() ......................................................................
Patch Set 3:
(1 comment)
https://review.coreboot.org/c/coreboot/+/42140/3/src/arch/x86/acpi_pm.c File src/arch/x86/acpi_pm.c:
PS3:
Both could be used outside of x86 world, but coreboot doesn't support that (yet).
I'll move the file then. I have some things from x86/acpi_s3.c to move out of arch/ acpi_pm.c sounds very much appropriate.
Kyösti Mälkki has abandoned this change. ( https://review.coreboot.org/c/coreboot/+/42140 )
Change subject: ACPI: Define acpi_get_preferred_pm_profile() ......................................................................
Abandoned
Felix Held has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/42140 )
Change subject: ACPI: Define acpi_get_preferred_pm_profile() ......................................................................
Patch Set 3:
(1 comment)
https://review.coreboot.org/c/coreboot/+/42140/3/src/arch/x86/acpi_pm.c File src/arch/x86/acpi_pm.c:
https://review.coreboot.org/c/coreboot/+/42140/3/src/arch/x86/acpi_pm.c@11 PS3, Line 11: enclosure i'd put the smbios_mainboard_enclosure_type() call in the argument of the switch statement to avoid casting it to int and comparing it with the enum values then
Kyösti Mälkki has restored this change. ( https://review.coreboot.org/c/coreboot/+/42140 )
Change subject: ACPI: Define acpi_get_preferred_pm_profile() ......................................................................
Restored
Hello build bot (Jenkins), Raul Rangel, Furquan Shaikh, Patrick Georgi, Martin Roth, Patrick Rudolph, Paul Menzel, Angel Pons, Patrick Rudolph, HAOUAS Elyes,
I'd like you to reexamine a change. Please visit
https://review.coreboot.org/c/coreboot/+/42140
to look at the new patch set (#4).
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/acpi/acpi_pm.c M src/include/acpi/acpi.h 3 files changed, 22 insertions(+), 8 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/40/42140/4
Kyösti Mälkki has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/42140 )
Change subject: ACPI: Define acpi_get_preferred_pm_profile() ......................................................................
Patch Set 4:
(2 comments)
https://review.coreboot.org/c/coreboot/+/42140/3/src/arch/x86/acpi_pm.c File src/arch/x86/acpi_pm.c:
PS3:
I'll move the file then. I have some things from x86/acpi_s3.c to move out of arch/ acpi_pm. […]
Done
https://review.coreboot.org/c/coreboot/+/42140/3/src/arch/x86/acpi_pm.c@11 PS3, Line 11: enclosure
i'd put the smbios_mainboard_enclosure_type() call in the argument of the switch statement to avoid […]
Done
Angel Pons has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/42140 )
Change subject: ACPI: Define acpi_get_preferred_pm_profile() ......................................................................
Patch Set 4: Code-Review+2
Felix Held has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/42140 )
Change subject: ACPI: Define acpi_get_preferred_pm_profile() ......................................................................
Patch Set 4: Code-Review+2
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);